# Шаг 1: Строим приложение
FROM golang:1.22 AS builder

# Устанавливаем gotip (если Go 1.22 требуется)
RUN go install golang.org/dl/gotip@latest && gotip download

# Устанавливаем рабочую директорию внутри контейнера
WORKDIR /app

# Копируем go.mod и go.sum файлы
COPY go.mod go.sum ./

# Загружаем зависимости
RUN gotip mod download

# Копируем весь исходный код
COPY . .

# Строим бинарный файл
RUN gotip build -o /app/main ./cmd/app/main.go

# Временный шаг для проверки наличия файла
RUN ls -l /app/main

# Шаг 2: Создаем минимальный образ для запуска приложения
FROM alpine:latest

# Устанавливаем сертификаты и libc (если ваше приложение использует стандартную библиотеку C)
RUN apk --no-cache add ca-certificates libc6-compat

# Устанавливаем рабочую директорию
WORKDIR /root/

# Копируем бинарный файл из стадии сборки
COPY --from=builder /app/main .

# Устанавливаем права на выполнение для бинарного файла
RUN chmod +x ./main

# Копируем файл конфигурации переменных окружения
COPY .env .

# Выводим переменные окружения перед запуском
RUN printenv

# Команда для запуска приложения
CMD ["./main"]
